Convolutional codes are generally used as error control codes to try and protect data that is being attached by noise, interference, etc., during transmission. The basic premise behind a convolutional coding system is to send more bits than is needed to describe the information, with the redundant or extra bits aiding in the fight against noise and/or interference pollution of the data. Performance is measured by the probability of error, and is commonly referred to as the bit error rate (BER) determined by the following formula: ##EQU1##
Acceptable BER levels vary depending upon the type of information being transmitted. For example, a speech coder outputting information over a wireless channel may be able to withstand a 3% BER with the person listening at the other end still being able to easily understand the transmitted speech.
The design of an error correction convolutional coding system generally consists of selecting a fixed convolutional code with a certain rate and correction capability matched to the protection requirements of the data to be transmitted, and adapted to the average or worst channel conditions to be expected. Such fixed convolutional code is commonly known as a mother convolutional code, or simply a mother code, and is generally applied to the data by an encoder. The convolutional code rate is generally defined by the formula k/n, where k is the number of input bits that the encoder accepts at a time, and n is the number of output bits that the encoder produces at a time, where n&gt;k. Thus, an input block of l bits results in an output block of ln/k bits, where l is assumed to be a multiple of k, without any real loss of generality.
At the receiving end of the system, a convolutional decoder receives the transmitted information signal and conventionally figures out which of the codewords was most likely to have happened. Among convolutional decoders, Viterbi decoders are popular for use in convolutional coding systems. An uncoder (the opposite of an encoder) then effectively uncodes the received signal resulting in the transmitted information signal. The transmitted information signal will have a bit error rate (BER) associated with it, preferably at or below the acceptable level.
In many cases, however, more flexibility is desired in the coding rate since the data to be transmitted may have different error protection needs. For example, it may be desirable to utilize different coding rates for different types of information to be transmitted, such as, but not limited to, speech, control information, data transmission, etc.
For practical purposes, it is also desirable to utilize one encoder and one decoder, both being modifiable without changing their basic structure. Generally, decoder complexity is the main concern, since it is generally the decoder which takes up the most memory space at the receiver end of the coding system. Both flexibility in the coding rate and decoder simplicity can be achieved by a technique commonly known as puncturing.
Puncturing is achieved by not transmitting certain code bits, or, as is more commonly known, by puncturing the code. Puncturing results in the reduction of the number of code bits actually transmitted, and results in a coding rate higher than the original mother code rate. For example, assume that in a system utilizing a 1/2 rate mother convolutional code, due to the type of information being transmitted, it is desirable to transmit the information utilizing a 3/4 rate convolutional code. However, to maintain decoder simplicity, it is desirable to utilize a decoder for a 1/2 rate convolutional code, since such a decoder is simpler in design and is less complex to operate than a decoder for a rate 3/4 code. Lower complexity translates into a smaller current and/or memory requirements. By puncturing the 1/2 convolutional code into an effective 3/4 convolutional code, both needs may be satisfied.
In the above example, the information to be transmitted is input to an encoder which applies the mother code rate of 1/2 to the information signal. If the information to be transmitted included 100 bits, 200 bits would be output by the encoder as the coded signal. The coded signal is then conventionally punctured to obtain a punctured signal having an effective convolutional code rate of 3/4 . In this example, puncturing decreases the 200 bit coded signal to a 133 bit punctured signal, which is transmitted across the channel, to obtain an effective convolutional code rate of 3/4 (100/133.about.3/4). Puncturing is generally known in the art, and accordingly, a detailed description of the puncturing technique utilized to reduce the 200 bit coded signal to a 133 bit punctured signal is not needed.
At the receiver end, a decoder for a 1/2 convolutional code rate may be used to decode the 133 bits (3/4 rate) by conventionally shutting off some taps of the decoder or conventionally skipping some steps in the decoding process. Using a 1/2 convolutional code rate decoder and shutting off some taps is simpler than utilizing a decoder specifically designed for a 3/4 convolutional code rate. Thus, transmission quality commensurate with a convolutional code rate of 3/4 is obtained, while maintaining simplicity in the decoder.
Mother codes having a generally low convolutional code rate of 1/2 or 1/3 are conmmonly implemented efficiently in ASICs or DSPs. However, in a given system, at least 2-3 additional code rates are desirable, e.g., 2/3, 5/6, etc., for the transmission of various information such as speech, control, data transmission, etc. For simplicity at the decoding end, it is desirable to puncture these additional code rates from the same mother code.
A problem with conventional puncturing is that an effective punctured convolutional code at rate=A is not as good as, i.e., has a higher BER, than a mother convolutional code at the same rate=A. For instance, in the example set forth above, the 3/4 rate punctured convolutional code has a higher BER than a 3/4 rate convolutional code implemented from scratch and utilized as the mother code.
The present invention is directed to overcoming one or more of the above-mentioned problems.